package pe.com.cotelasa.scp.controlador;

import java.io.Serializable;
import java.util.Date;
import java.util.Iterator;
import javax.faces.event.ActionEvent;
import javax.inject.Inject;
import javax.inject.Named;
import org.apache.log4j.Logger;
import org.primefaces.event.RowEditEvent;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import pe.com.cotelasa.common.controlador.MBGenerico;
import pe.com.cotelasa.scp.controlador.backingBean.BKComponenteLocal;
import pe.com.cotelasa.scp.dominio.common.ESTADO_REGISTRO;
import pe.com.cotelasa.scp.entidad.Sede;
import pe.com.cotelasa.seguridad.controlador.backingBean.BKSession;

@Named(value = "MBComponenteLocal")
@Scope("request")
public class MBComponenteLocal extends MBGenerico implements Serializable{

    private static Logger logger = Logger.getLogger(MBComponenteLocal.class);
    @Inject
    private BKComponenteLocal bkComponenteLocal;
    
    @Autowired
    BKSession session;

    public void eliminarLocal(ActionEvent actionEvent) {
        Sede localEliminado = this.bkComponenteLocal.getCurrentLocal();
        if (localEliminado.getId() == null) {
            Iterator itr = this.bkComponenteLocal.getListaLocal().iterator();
            while (itr.hasNext()) {
                Sede sede = (Sede) itr.next();
                if (localEliminado.getDireccion().equals(sede.getDireccion())) {
                    itr.remove();
                    break;
                }
            }
        } else {
            this.bkComponenteLocal.getListaLocal().remove(localEliminado);
            Integer index = bkComponenteLocal.getListaLocalEditar().indexOf(localEliminado);
            localEliminado.setEstadoRegistro(ESTADO_REGISTRO.INACTIVO.getValor());
            localEliminado.setFecModificacion(new Date());
            localEliminado.setUsrModificacion(session.getUsuario().getUsuario());
            this.bkComponenteLocal.getListaLocalEditar().set(index, localEliminado);
        }
    }

    public void agregarLocal(ActionEvent actionEvent) {
        Sede localAgregado = this.bkComponenteLocal.getFormularioLocal();

        localAgregado.setUsrCreacion(session.getUsuario().getUsuario());
        localAgregado.setFecCreacion(new Date());
        localAgregado.setEstadoRegistro(ESTADO_REGISTRO.ACTIVO.getValor());
        localAgregado.setSedeAdministradora(0);
        //localAgregado.setNombre("Local");
        localAgregado.setNroSecGuiaRemision(0);
        localAgregado.setNroSecFactura(0);
        localAgregado.setEsAlmacen((short) 1);
        localAgregado.setEsTienda((short) 0);
        if(localAgregado.getNombre() == null){
            localAgregado.setNombre("LOCAL");
        }

        this.bkComponenteLocal.getListaLocal().add(localAgregado);
        this.bkComponenteLocal.getListaLocalEditar().add(localAgregado);

        this.bkComponenteLocal.setFormularioLocal(new Sede());
    }

    public void editarLocal(RowEditEvent event) {
        Sede localEditado = (Sede) event.getObject();
        Integer index = this.bkComponenteLocal.getListaLocalEditar().indexOf(localEditado);
        if (localEditado.getId() != null) {

            localEditado.setUsrModificacion(session.getUsuario().getUsuario());
            localEditado.setFecModificacion(new Date());
        }

        this.bkComponenteLocal.getListaLocalEditar().set(index, localEditado);
    }
}
